'''
Created on 08/ago/2010

@author: Christian, Stefano

Last Modified 09/08/2010
'''

import gtk.glade #@UnresolvedImport
import pygtk #@UnresolvedImport
import gobject #@UnresolvedImport
import DataParser
import pyF1Classes


#Gestione Pulsanti

def on_dialog1_destroy(widget, data=None):
    gtk.main_quit()

def on_dialog2_destroy(widget, data=None):
    dialog2.hide()

def on_btAnnulla_clicked(widget, data=None):
    dialog2.hide()
    
def on_btModifica_clicked(widget, data=None):
    gestioneModifica()
    dialog2.show()
    
def on_btEsci_clicked(widget, data=None):
    gtk.main_quit()

def on_btOK_clicked(widget, data=None):
    creaFormazione()
    riempiTreeview()
    dialog2.destroy()
    
def gestioneModifica():
    #Routine che pesca i nomi dal file e crea i piloti e i team dalla lista
    global valoreFondi
    global idPilota
    global idTeam
    valoreFondi = pyF1Classes.Fondi(1000)
    idPilota, idTeam = DataParser.DataParsing()       
    
    # Gestione ComboBox
    modelCombo1 = gtk.ListStore(gobject.TYPE_STRING)
    
    for k in range(24):
        modelCombo1.append([idPilota[k].getKey()])
 
    combobox1.set_model (modelCombo1)
    cell = gtk.CellRendererText()
    combobox1.pack_start(cell, True)
    combobox1.add_attribute(cell, 'text',0)
    
    combobox2.set_model (modelCombo1)
    cell = gtk.CellRendererText()
    combobox2.pack_start(cell, True)
    combobox2.add_attribute(cell, 'text',0)
    
    combobox3.set_model (modelCombo1)
    cell = gtk.CellRendererText()
    combobox3.pack_start(cell, True)
    combobox3.add_attribute(cell, 'text',0)
    
    combobox4.set_model (modelCombo1)
    cell = gtk.CellRendererText()
    combobox4.pack_start(cell, True)
    combobox4.add_attribute(cell, 'text',0)
    
    combobox5.set_model (modelCombo1)
    cell = gtk.CellRendererText()
    combobox5.pack_start(cell, True)
    combobox5.add_attribute(cell, 'text',0)
    
    combobox6.set_model (modelCombo1)
    cell = gtk.CellRendererText()
    combobox6.pack_start(cell, True)
    combobox6.add_attribute(cell, 'text',0)
    
    modelCombo2 = gtk.ListStore(gobject.TYPE_STRING)
    
    for k in range(12):
        modelCombo2.append([idTeam[k].getKey()])
    
    combobox7.set_model (modelCombo2)
    cell = gtk.CellRendererText()
    combobox7.pack_start(cell, True)
    combobox7.add_attribute(cell, 'text',0)

def on_combobox1_changed(widget, data=None):
    aggiornaFondi()

def on_combobox2_changed(widget, data=None):
    aggiornaFondi()

def on_combobox3_changed(widget, data=None):
    aggiornaFondi()
        
def on_combobox4_changed(widget, data=None):
    aggiornaFondi()
            
def on_combobox5_changed(widget, data=None):
    aggiornaFondi()
                
def on_combobox6_changed(widget, data=None):
    aggiornaFondi()

def on_combobox7_changed(widget, data=None):
    aggiornaFondi()
    
def creaFormazione():
    """ 
    print(combobox1.get_active_text())
    print(combobox2.get_active_text())
    print(combobox3.get_active_text())
    print(combobox4.get_active_text())
    print(combobox5.get_active_text())
    print(combobox6.get_active_text())
    print(combobox7.get_active_text())
    print("Totale = " + str(1000 - valoreFondi.valore))
    """
    global nomeFormazione
    global teamFormazione
    global prezzoFormazione
    nomeFormazione = []
    nomeFormazione.append(idPilota[combobox1.get_active()].getNominativo())
    nomeFormazione.append(idPilota[combobox2.get_active()].getNominativo())
    nomeFormazione.append(idPilota[combobox3.get_active()].getNominativo())
    nomeFormazione.append(idPilota[combobox4.get_active()].getNominativo())
    nomeFormazione.append(idPilota[combobox5.get_active()].getNominativo())
    nomeFormazione.append(idPilota[combobox6.get_active()].getNominativo())
    nomeFormazione.append("TEAM")
    
    teamFormazione = []
    teamFormazione.append(idPilota[combobox1.get_active()].scuderia)
    teamFormazione.append(idPilota[combobox2.get_active()].scuderia)
    teamFormazione.append(idPilota[combobox3.get_active()].scuderia)
    teamFormazione.append(idPilota[combobox4.get_active()].scuderia)
    teamFormazione.append(idPilota[combobox5.get_active()].scuderia)
    teamFormazione.append(idPilota[combobox6.get_active()].scuderia)
    teamFormazione.append(idTeam[combobox7.get_active()].nome)
    
    prezzoFormazione = []
    prezzoFormazione.append(idPilota[combobox1.get_active()].prezzo)
    prezzoFormazione.append(idPilota[combobox2.get_active()].prezzo)
    prezzoFormazione.append(idPilota[combobox3.get_active()].prezzo)
    prezzoFormazione.append(idPilota[combobox4.get_active()].prezzo)
    prezzoFormazione.append(idPilota[combobox5.get_active()].prezzo)
    prezzoFormazione.append(idPilota[combobox6.get_active()].prezzo)
    prezzoFormazione.append(idTeam[combobox7.get_active()].prezzo)

def aggiornaFondi():
    if combobox1.get_active() == -1:
        prezzo1 = 0
    else:
        prezzo1 = idPilota[combobox1.get_active()].prezzo
    if combobox2.get_active() == -1:
        prezzo2 = 0
    else:    
        prezzo2 = idPilota[combobox2.get_active()].prezzo
    if combobox3.get_active() == -1:
        prezzo3 = 0
    else:
        prezzo3 = idPilota[combobox3.get_active()].prezzo
    if combobox4.get_active() == -1:
        prezzo4 = 0
    else:
        prezzo4 = idPilota[combobox4.get_active()].prezzo
    if combobox5.get_active() == -1:
        prezzo5 = 0
    else:
        prezzo5 = idPilota[combobox5.get_active()].prezzo
    if combobox6.get_active() == -1:
        prezzo6 = 0
    else:
        prezzo6 = idPilota[combobox6.get_active()].prezzo
    if combobox7.get_active() == -1:
        prezzo7 = 0
    else:
        prezzo7 = idTeam[combobox7.get_active()].prezzo
    valoreFondi.valore = 1000 - int(prezzo1) - int(prezzo2) - int(prezzo3) - int(prezzo4) - int(prezzo5) - int(prezzo6)- int(prezzo7)
    print(prezzo1,prezzo2,prezzo3,prezzo4,prezzo5,prezzo6,prezzo7,valoreFondi.valore)
    
    #stringaLabel = "<b><big>"+str(valoreFondi.valore)+"</big></b>"
    stringaLabel = str(valoreFondi.valore)
    stringaNoFondi = "!! " + stringaLabel + " Non hai abbastanza fondi !!"
    print stringaLabel
    
    if valoreFondi.valore < 0:
        labelFondi.set_label("<b><big>%s</big></b>" % stringaNoFondi)
    else:
        labelFondi.set_label("<b><big>%s</big></b>" % stringaLabel)

def riempiTreeview():
    cella = gtk.CellRendererText()
    colonna0 = gtk.TreeViewColumn("Nome", cella, text=0)  
    colonna1 = gtk.TreeViewColumn("Scuderia", cella, text=1)  
    colonna2 = gtk.TreeViewColumn("Prezzo", cella, text=2)  
    
    # Append delle colonne:  
    tvFormazione.append_column(colonna0)  
    tvFormazione.append_column(colonna1)  
    tvFormazione.append_column(colonna2)  
       
    # Colonne allargabili:  
    colonna0.set_resizable(True)  
    colonna1.set_resizable(True)  
    colonna2.set_resizable(True)  
    
    store = gtk.TreeStore(gobject.TYPE_STRING)  
    tvFormazione.set_model(store)
    tvFormazione.set_reorderable(True)  
 
 
    # Gestione Tabella
    modelTree1 = gtk.ListStore (str, str, int)
    for i in range(7):
        modelTree1.append([nomeFormazione[i],teamFormazione[i],int(prezzoFormazione[i])])
    modelTree1.append(["TOTALE","-",(1000 - valoreFondi.valore)])
       
    tvFormazione.set_model (modelTree1)
    
segnali = {
    'on_dialog1_destroy': on_dialog1_destroy,
    'on_dialog2_destroy': on_dialog2_destroy,
    'on_combobox1_changed': on_combobox1_changed,
    'on_combobox2_changed': on_combobox2_changed,
    'on_combobox3_changed': on_combobox3_changed,
    'on_combobox4_changed': on_combobox4_changed,
    'on_combobox5_changed': on_combobox5_changed,
    'on_combobox6_changed': on_combobox6_changed,
    'on_combobox7_changed': on_combobox7_changed,
    'on_btOK_clicked': on_btOK_clicked,
    'on_btModifica_clicked': on_btModifica_clicked,
    'on_btEsci_clicked': on_btEsci_clicked,
    'on_btAnnulla_clicked': on_btAnnulla_clicked
}


gladeFile = gtk.glade.XML('FantaF1.glade')
dialog1 = gladeFile.get_widget('dialog1')
dialog2 = gladeFile.get_widget('dialog2')


#pulsanti
btModifica = gladeFile.get_widget('btModifica')
btAnnulla = gladeFile.get_widget('btAnnulla')
btOK = gladeFile.get_widget('btOK')
btEsci = gladeFile.get_widget('btEsci')

#treeview
tvFormazione = gladeFile.get_widget('tvFormazione')

#combobox
combobox1 = gladeFile.get_widget('combobox1')
combobox2 = gladeFile.get_widget('combobox2')
combobox3 = gladeFile.get_widget('combobox3')
combobox4 = gladeFile.get_widget('combobox4')
combobox5 = gladeFile.get_widget('combobox5')
combobox6 = gladeFile.get_widget('combobox6')
combobox7 = gladeFile.get_widget('combobox7')

#labels
labelFondi = gladeFile.get_widget("label3")

gladeFile.signal_autoconnect(segnali)


if dialog1:
    dialog1.show()

    gtk.main()
    
